/** 全局枚举 
 * 页面以及table显示枚举lable可如下使用: 
 * enums.modelEnum.getValue(scope.row.status)
 *  枚举类 
 * 如需根据枚举值判断可如下使用: 
 * if (item.taskStatus === enums.modelEnum.SEMI.value) {
 *    this.settleBtnDisabled = false  
 * }
 * **/
export class Enum {
  /**
   * 添加枚举字段
   * field: 枚举字段
   * label: 界面显示
   * value: 枚举值
   */
  add (field, label, value) {
    this[field] = {
      label,
      value
    }
    return this
  }
  /**
   * 根据枚举value获取其label
   */
  getValue (value) {
    // 字段不存在返回‘’
    if (value === undefined || value === null) return ''
    for (const i in this) {
      const e = this[i]
      if (e && e.value === value) {
        return e.label
      }
    }
    return ''
  }
  /**
   * 根据枚举label获取其value
   */
  getLabel (label) {
    if (label === undefined || label === null) return ''
    for (const i in this) {
      const e = this[i]
      if (e && e.label === label) {
        return e.value
      }
    }
  }
}

const enumOptions = {
  /* 车型 */
  modelEnum: new Enum()
    .add('SEMI', '半挂车', 1)
    .add('HIGH_SIDED', '高栏车', 2)
    .add('BOX', '箱式火车', 3)
    .add('FLAT', '平板车', 4)
    .add('OPEN', '敞车', 5)
    .add('COLD', '冷藏车', 6)
    .add('BREAD', '面包车', 7)
    .add('SPECIAL', '特种车辆', 8)
    .add('CARD', '集卡车', 9)
    .add('LOAD', '载重车', 10),
  /* 单位 */
  unitEnums: new Enum()
    .add('KG', '公斤', 1)
    .add('TON', '吨', 2)
    .add('CUBIC_METER', '立方米', 3)
    .add('RISE', '升', 4)
    .add('INDIV', '个', 5)
    .add('TROLLEY', '托', 6)
    .add('PLATFORM', '台', 7)
    .add('BOX', '箱', 8)
    .add('PACKAGE', '包', 9)
    .add('BUNDLE', '捆', 10)
    .add('VEHICLES', '辆', 11)
    .add('PIECE', '件', 12)
    .add('BAG', '袋', 13)
    .add('FRAME', '架', 14)
    .add('CASE', '盒', 15)
    .add('BUCKET', '桶', 16)
    .add('OTHER', '其它', 17),
  /* 单位分类 */
  unitTypeEnums: new Enum()
    .add('KG', '重量/公斤', 1)
    .add('TON', '重量/吨', 2)
    .add('CUBIC_METER', '体积/立方米', 3)
    .add('RISE', '体积/升', 4)
    .add('INDIV', '数量/个', 5)
    .add('TROLLEY', '数量/托', 6)
    .add('PLATFORM', '数量/台', 7)
    .add('BOX', '数量/箱', 8)
    .add('PACKAGE', '数量/包', 9)
    .add('BUNDLE', '数量/捆', 10)
    .add('VEHICLES', '数量/辆', 11)
    .add('PIECE', '数量/件', 12)
    .add('BAG', '数量/袋', 13)
    .add('FRAME', '数量/架', 14)
    .add('CASE', '数量/盒', 15)
    .add('BUCKET', '数量/桶', 16)
    .add('OTHER', '其它', 17),
}

export default enumOptions

export const transportApiEnum = {
  sign: "/transport/waybill/sign",
  batchSign: "/transport/waybill/batch/sign",
  binded: "/transport/waybill/device/binded",
  batchBinded: "/transport/waybill/device/batch/binded",
  orderBatchSign: `order/sign/batch`,
  orderSign: `order/sign`
};
